export default {
  inserted(el) {
    let isComposing = false;

    const formatInput = (e) => {
      if (isComposing) return; // 输入法输入进行中，暂不格式化

      let value = e.target.value;

      // 1. 保留数字和一个小数点
      const formattedValue = value.replace(/[^0-9.]/g, ""); // 去掉非数字和小数点的字符

      // 2. 分割整数部分和小数部分
      let [integerPart, decimalPart] = formattedValue.split(".");

      // 3. 限制整数部分最多 6 位
      if (integerPart.length > 6) {
        integerPart = integerPart.slice(0, 6);
      }

      // 4. 限制小数部分最多 2 位
      if (decimalPart) {
        decimalPart = decimalPart.slice(0, 2);
      }

      // 5. 合并整数部分和小数部分
      const newValue = decimalPart
        ? `${integerPart}.${decimalPart}`
        : integerPart;

      newValue;
      // 6. 如果格式化后的值和原值不同，则更新输入框的值
      if (value !== newValue) {
        newValue;
        e.target.value = newValue; // 更新输入框的值
        newValue;
        e.target.value;
      }
    };

    el.addEventListener("compositionstart", () => (isComposing = true)); // 开始输入法输入
    el.addEventListener("compositionend", (e) => {
      isComposing = false;
      formatInput(e); // 输入法输入结束后立即格式化内容
    });
    el.addEventListener("input", formatInput); // 输入时格式化
    el.addEventListener("blur", formatInput); // 失去焦点时格式化
  },
};
